package nc.jv.Sort;

/**
 * @author Vadim Gidulyan
 *
 */
public interface DataGenerator
{

	/**
     * Генерирует входные данные для сортировки
     * 
     * <p>Лучший случай - массив сортируется за минимальное время
     * 
     * @param length
     *                Длина генерируемого массива
     * 
     * @return Массив заданной длины {@code length}  
     */
	@SuppressWarnings("rawtypes")
	Comparable[] generateBestData(int length);
	
	/**
     * Генерирует входные данные для сортировки
     * 
     * <p>Среднестатистический случай - массив сортируется за среднее время.
     * Предположительно, массив заполнен случайными значениями 
     * 
     * @param length
     *                Длина генерируемого массива
     * 
     * @return Массив заданной длины {@code length}  
     */
	@SuppressWarnings("rawtypes")
	Comparable[] generateNormalData(int length);
	
	/**
     * Генерирует входные данные для сортировки
     * 
     * <p>Худший случай - массив сортируется за максимальное время
     * 
     * @param length
     *                Длина генерируемого массива
     * 
     * @return Массив заданной длины {@code length}  
     */
	@SuppressWarnings("rawtypes")
	Comparable[] generateWorstData(int length);
	
}
